/*
 * Copyright (c) 2018-2999 湖南洛云网络科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 */

package com.yami.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.RetailProd;
import com.yami.shop.bean.param.RetailProdParam;
import com.yami.shop.common.util.PageParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 *
 *
 * @author LGH
 * @date 2020-08-24 15:18:35
 */
public interface RetailProdService extends IService<RetailProd> {

    /**
     * 分页获取单品信息
     * @param page 分页参数
     * @param retailProd 条件查询参数
     * @return 分页单品信息数据
     */
    IPage<RetailProd> getPage(PageParam<RetailProd> page, RetailProd retailProd);

    /**
     * 删除单品
     * @param ids 单品id
     * @param shopId 店铺id
     */
    void removeRetainProdByIds(Long[] ids, Long shopId);

    /**
     * 统计条形码的单品数量
     * @param barCode 条形码
     * @return 数量
     */
    boolean countBarCode(String barCode);

    /**
     *  统计单品条码的单品数
     * @param barCode 单品条码
     * @param retailProdId 单品id
     * @return 数量
     */
    void countBarCodeAndId(String barCode, Long retailProdId);

    /**
     * 获取单品详情
     * @param retailProdId 单品id
     * @return 单品信息
     */
    RetailProd getInfo(Long retailProdId);

    /**
     * 获取sku下所有的单品信息
     * @param skuId skuId
     * @return 单品信息列表
     */
    List<RetailProdParam> getBySkuId(Long skuId);


    /**
     * 导出单品信息
     * @param retailProd 条件参数
     * @param response 响应
     * @param shopId 店铺id
     */
    void exportRetailProd(RetailProd retailProd, HttpServletResponse response, Long shopId);

    /**
     * 导入单品信息
     * @param response 响应
     * @param shopId 店铺id
     */
    void importRetailProdModel(HttpServletResponse response, Long shopId);

    /**
     * 解析导入Excel
     * @param excelFile 导入的excel文件
     * @param shopId 店铺id
     * @return object
     * @throws IOException
     */
    Object parseFile(MultipartFile excelFile, Long shopId) throws IOException;

    /**
     * 修改单品信息以及库存
     * @param retailProd 单品信息
     * @return 布尔值
     */
    boolean updateAndUpdateStock(RetailProd retailProd);

}
